mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

sql server 2012 数据库所有表里查找某字符串的方法

来源:网络整理  作者:网络  发布时间:2020-12-12 16:03
此TSQL语句是针对SQL Server 2012编写。如果使用之前版本,需要对部分语句进行重写。...
END
(
OPEN columnCursor;
xtype = 35 or --text
--1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'
USE [数据库名称];
DECLARE columnCursor CURSOR FOR
SELECT Name FROM SysColumns WHERE ID = Object_Id( @tableName ) and
FETCH NEXT from Cursor_Table INTO @tableName;
DECLARE @key_find NVARCHAR(MAX) = '123';--假设是找字符串"123"
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties';
exec(@tempSQLText);

FETCH NEXT from columnCursor INTO @columnName
xtype = 99 or --ntext
CLOSE columnCursor;
--4.在表的字段中,对每一行进行模糊搜索,并输出找到的信息。

DECLARE @columnName NVARCHAR(MAX);
xtype = 231 or --nvarchar
DECLARE @DynamicSQLText NVARCHAR(MAX) = 'IF ( EXISTS ( SELECT * FROM [' + @tableName + '] WHERE [' + @columnName + '] LIKE ''%' + @key_find + '%'' ) ) BEGIN DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] ); PRINT ''Find : Table [' + @tableName + '], Column [' + @columnName + '], Row Count:'' + CAST( @CurrentTableCount AS NVARCHAR(MAX) ) + ''.''; END';
--2.用游标Cursor_Table,遍历所有表

--3.在表中,用游标columnCursor,遍历所有字段。注意,只遍历字符串类型的字段(列)
DECLARE Cursor_Table CURSOR FOR
xtype = 241 --xml
DEALLOCATE columnCursor;

xtype = 239 or --nchar

复制代码 代码如下:

WHILE @@fetch_status = 0
EXEC( @DynamicSQLText );
BEGIN
)
DECLARE @tableName NVARCHAR(MAX);
xtype = 175 or --char
CLOSE Cursor_Table;
WHILE @@fetch_status = 0
DECLARE @tempSQLText NVARCHAR(MAX) = '';
BEGIN
FETCH NEXT from Cursor_Table INTO @tableName;
DEALLOCATE Cursor_Table;
END


OPEN Cursor_Table;
xtype = 167 or --varchar
FETCH NEXT from columnCursor INTO @columnName;

相关热词: 方法

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mssql/2982.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

sql server 2012 数据库所有表里查找某字符串的方法

2020-12-12 编辑:网络

END
(
OPEN columnCursor;
xtype = 35 or --text
--1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'
USE [数据库名称];
DECLARE columnCursor CURSOR FOR
SELECT Name FROM SysColumns WHERE ID = Object_Id( @tableName ) and
FETCH NEXT from Cursor_Table INTO @tableName;
DECLARE @key_find NVARCHAR(MAX) = '123';--假设是找字符串"123"
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties';
exec(@tempSQLText);

FETCH NEXT from columnCursor INTO @columnName
xtype = 99 or --ntext
CLOSE columnCursor;
--4.在表的字段中,对每一行进行模糊搜索,并输出找到的信息。

DECLARE @columnName NVARCHAR(MAX);
xtype = 231 or --nvarchar
DECLARE @DynamicSQLText NVARCHAR(MAX) = 'IF ( EXISTS ( SELECT * FROM [' + @tableName + '] WHERE [' + @columnName + '] LIKE ''%' + @key_find + '%'' ) ) BEGIN DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] ); PRINT ''Find : Table [' + @tableName + '], Column [' + @columnName + '], Row Count:'' + CAST( @CurrentTableCount AS NVARCHAR(MAX) ) + ''.''; END';
--2.用游标Cursor_Table,遍历所有表

--3.在表中,用游标columnCursor,遍历所有字段。注意,只遍历字符串类型的字段(列)
DECLARE Cursor_Table CURSOR FOR
xtype = 241 --xml
DEALLOCATE columnCursor;

xtype = 239 or --nchar

复制代码 代码如下:

WHILE @@fetch_status = 0
EXEC( @DynamicSQLText );
BEGIN
)
DECLARE @tableName NVARCHAR(MAX);
xtype = 175 or --char
CLOSE Cursor_Table;
WHILE @@fetch_status = 0
DECLARE @tempSQLText NVARCHAR(MAX) = '';
BEGIN
FETCH NEXT from Cursor_Table INTO @tableName;
DEALLOCATE Cursor_Table;
END


OPEN Cursor_Table;
xtype = 167 or --varchar
FETCH NEXT from columnCursor INTO @columnName;

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mssql/2982.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页